/**
 * @file test_cls.h
 * @author lwitcher (lwitcher@163.com)
 * @brief 
 * @version 0.1
 * @date 2019-11-18
 * 
 * @copyright Copyright (c) 2019
 * @attention 这个文件是演示doxygen用的，不保证编译没问题
 * 
 */
#include <iostream>

/**
 * @brief 测试用的类
 * @author lwitcher (lwitcher@163.com)
 * 
 */
class test_cls
{
private:
    int count_; ///<计数器
    std::string str_; ///<字符串
public:
    /** @name need_unit_test */
    //@{
    /**
     * @brief 构造一个新对象
     * 
     * @param[in] count 属性count_初始值
     * @param[in] str 属性str_初始值
     * @bug 目前偶发性崩溃
     */
    test_cls(int count, const std::string& str);
    /**
     * @brief 析构一个对象
     * @note 注意事项
     * @pre 前置条件是先构造，再析构
     * @post 后置条件当然是析构了不能再使用了
     */
    ~test_cls();
    /**
     * @brief 打印成员，该函数没有参数
     * 
     * 用法如下：
     * 
     * obj.print_members();
     * 
     */
    void print_members();
    //@}

    /**
     * @brief 这个函数不需要单元测试
     * 
     */
    void no_use_func(){};

    /** 枚举
     * 可以写好几行
     */
    enum NUM{
        ZERO=0, ///< 枚举的说明1
        ONE=1, ///< 枚举的说明2
        TWO=2 ///< 枚举的说明3
    }
};


/** 复杂的宏函数可以这么注释
 * 这种写法可以增加更多的描述
 */
#define FUNC(p1) void(p1)

#define TEST_MACRO 1 ///< 测试用的宏定义1

